Лабораторная работа 1

Имитационное моделирование

Богданюк Анна Васильевна

Российский университет дружбы народов

Вводная часть

Цель работы

  • Создание рабочего пространства для выполнения лабораторных работ
  • Настройка инструментов программной инженерии
  • Освоение методологии литературного программирования

Основная часть

Теоретическое введение

  • Семантическое версионирование (SemVer): Стандарт версионирования программного обеспечения, использующий формат МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ.
  • Общепринятые коммиты: Спецификация для написания сообщений коммитов. Она определяет набор правил для создания понятной истории изменений.

Теоретическое введение

  • Git и Git-flow: Распределенная система контроля версий Git и модель ветвления Git-flow, которая предполагает использование двух основных веток (master и develop), а также вспомогательных (feature, release, hotfix) для организации процесса разработки.
  • Верификация коммитов: Использование GPG-ключей для подписи коммитов, что позволяет подтвердить их подлинность на хостингах (GitHub/GitVerse).

Теоретическое введение

  • Литературное программирование: Подход, предложенный Дональдом Кнутом, при котором программа пишется как литературное эссе, где код является лишь частью повествования. В Julia для этого используется пакет Literate.jl.

Выполнение работы

Для начала создаём рабочий каталог для курса, используя шаблон (рис. 1).

Рисунок 1: Создаём репозиторий по шаблоны

Выполнение работы

Готовый репозитория для курса на github.com (рис. 2).

Рисунок 2: Репозиторий на github.com

Выполнение работы

Создаём рабочее пространство для программ в рамках лабораторной работы. Установить необходимые пакеты. На скриншоте показан результат работы программы на языке julia, чтобы проверить скаченные материалы(рис. 3).

Рисунок 3: Результат работы test_setup.jl

Выполнение работы

Копируем код программы на языке julia из методички по лабораторной работе №1. Компилируем, получем результат в виде графика, который будет сохранён в папке plots (рис. 4).

Рисунок 4: Результат программы 01_exponential_growth.jp

Выполнение работы

Теперь создаём код для генерации нескольких видов графиков экспоненциального распределения scripts/02_exponential_growth.jl. Для начала базовый эксперемент (рис. 5).

Рисунок 5: Результат программы 02_exponential_growth.jl

Выполнение работы

Сравнительный анализ всех экспериментов (рис. 6).

Рисунок 6: Результат программы 02_exponential_growth.jl

Выполнение работы

График зависимости времени удвоения от a (рис. 7).

Рисунок 7: Результат программы 02_exponential_growth.jl

Выполнение работы

График зависимости времени вычисления от a (рис. 8).

Рисунок 8: Результат программы 02_exponential_growth.jl

Вывод

В ходе выполнения лабораторной работы было создано структурированное рабочее пространство для курса «Математическое моделирование». Освоены базовые инструменты и практики программной инженерии: система контроля версий Git с моделью ветвления Git-flow, семантическое версионирование и стандарт оформления коммитов Conventional Commits. Настроена безопасная работа с удаленными репозиториями с помощью SSH и PGP ключей для верификации коммитов.